package com.mz.ozy.utils;

import android.text.Editable;
import android.text.TextUtils;
import android.widget.EditText;

import java.math.BigDecimal;
import java.text.DecimalFormat;


/**
 * Created by administrator on 2018/9/21.
 */
public class StringUtils {

    /**
     * 限制8位整数，4位小数
     *
     * @param editable
     * @param editText
     */
    public static void editTextUtils(Editable editable, EditText editText) {
        editTextUtils(editable, editText, 8, 4);
    }

    /**
     * @param editable
     * @param editText
     * @param IntegerNumber 整数位数
     * @param decimalDigits 小数位数
     */
    public static void editTextUtils(Editable editable, EditText editText, int IntegerNumber, int decimalDigits) {
        String str = editable.toString();
        //这部分是处理如果输入框内小数点后已有两位，那么舍弃最后一位赋值，光标移动到最后
        int index = editText.getSelectionStart();//获取光标位置
        if (str.contains(".")) {
            //限制小数位
            if (str.length() - str.indexOf(".") - 1 > decimalDigits) {
                editable.delete(str.length() - 1, str.length());
                editText.setSelection(str.length() - 1);
            }
            //限制整数位
            if (str.substring(0, str.indexOf(".")).length() > IntegerNumber) {
                editable.delete(index - 1, index);
            }
        } else {
            //限制整数位
            if (str.length() > IntegerNumber) {
                editable.delete(str.length() - 1, str.length());
            }
        }
        //这部分是处理如果用户输入以.开头，在前面加上0
        if (str.substring(0).equals(".")) {
            editText.setText("0" + str);
            editText.setSelection(2);
        }
        //这里处理用户 多次输入.的处理 比如输入 1..6的形式，是不可以的
        if (str.startsWith("0") && str.length() > 1) {
            if (!str.substring(1, 2).equals(".")) {
                editText.setText(str.subSequence(0, 1));
                editText.setSelection(1);
                return;
            }
        }
    }


    /**
     * 最多4位小数
     *
     * @param srcNum
     * @return
     */
    public static String changeSN(String srcNum) {
        if (srcNum != null && !"".equals(srcNum)) {
            return new BigDecimal(srcNum)
                    .setScale(4, BigDecimal.ROUND_HALF_UP)  //保留4位小数，且四舍五入
                    .stripTrailingZeros()    //去除末尾多余的0
                    .toPlainString();   //避免科学计数法，替换 toString()
        } else {
            return "";
        }
    }

    /**
     * 保留多少位小数
     *
     * @param srcNum
     * @param decimal 小数位数
     * @return
     */
    public static String changeSN(String srcNum, int decimal) {
        if (srcNum != null && !"".equals(srcNum)) {
            return new BigDecimal(srcNum)
                    .setScale(decimal, BigDecimal.ROUND_HALF_UP)  //保留4位小数，且四舍五入
                    .stripTrailingZeros()    //去除末尾多余的0
                    .toPlainString();   //避免科学计数法，替换 toString()
        } else {
            return "";
        }
    }

    /**
     * 将时间格式的.0 删除
     *
     * @param time
     * @return
     */
    public static String changeTime(String time) {
        if (time != null && !"".equals(time) && time.contains(".")) {
            return time.substring(0, time.indexOf("."));
        }
        return time;
    }

    /**
     * 判断数据是不是为0
     *
     * @param data
     * @return
     */
    public static boolean isZero(String data) {

        if (data == null ||
                TextUtils.isEmpty(data) ||
                "0".equals(data) ||
                "0.0".equals(data) ||
                "0.00".equals(data) ||
                "0.000".equals(data) ||
                "0.0000".equals(data)) {
            return true;
        }

        double zero = 1;
        try {
            zero = Double.valueOf(data);
        } catch (NumberFormatException e) {
            e.printStackTrace();
        }

        if (Math.abs(zero) < 0.000001d) {
            return true;
        }
        return false;
    }

    /**
     * @param d       数据
     * @param decimal 保留几位小数
     * @return String 0.00
     */
    public static String formattingDecimal(String d, int decimal) {

        if (d == null || TextUtils.isEmpty(d)) return "0.00";

        BigDecimal bigDecimal = null;
        try {
            bigDecimal = new BigDecimal(d);
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (bigDecimal == null) return d;

        String temp = "";
        for (int i = 0; i < decimal; i++) {
            temp = temp + "0";
        }
        temp = "#0." + temp;
        DecimalFormat df = new DecimalFormat(temp);

        String format = df.format(bigDecimal);

        return format;
    }

    public static void createColorText() {

    }


}
